A virtual machine image contains an operating system (e.g., Linux) and other data needed to launch a virtual machine in a virtual environment. The virtual machine image is similar to a physical computer's disk volume, and can include a file system, the operating system and other components needed to boot up as a machine.
To launch a virtual machine, hardware needs to be selected. The hardware selection is accomplished through instance types, which allow a variety of different sizes of memory, CPU capacity, I/O performance, etc. The combination of the virtual machine image and the instance type can be used to create an “instance” or a virtual machine.
The launched virtual machine also has a “volume” associated with it, which is like a virtual hard disk of the virtual machine. A snapshot is a copy of the volume at a given point in time and allows a user to preserve the state of the virtual machine. Of course, the snapshot includes software from the original source virtual machine image.
Snapshots can also be used to create a new virtual machine image. In this way, third parties can take generic virtual machine images, add new components and re-package the snapshots as a new virtual machine image usable by others.
One problem with virtual machine images made from snapshots is that updates are often ignored. For example, if Linux has a new security patch release, a cloud provider may update the source virtual machine image, but any already-created snapshot will not be updated, unless the third party takes the updated source virtual machine image, adds the same components to it and again re-packages it as a new virtual machine image.